const util = require("../../utils/util")

Page({
    data: {
        assetTypes: [
            { id: 1, name: '计算机' },
            { id: 2, name: '手机' },
            { id: 3, name: '显示器' },
            { id: 4, name: '桌子' },
            { id: 5, name: '板凳' },
            { id: 6, name: '冰箱' },
            { id: 7, name: '主机' },
            { id: 8, name: '路由器' },
            { id: 9, name: '车' },
            { id: 10, name: '手机' },
            { id: 11, name: '其它' }
        ],
        photoResult: {}, // 存储拍照识别结果
        typeIndex: -1,
        purchaseDate: '',
        images: [],
        isSubmitting: false,
        formData: {
            assetId: ''
        },
        latitude: '', // 纬度（手动输入/定位获取）
        longitude: '' // 经度（手动输入/定位获取）
    },

    // 选择图片
    chooseImage() {
        const count = 5 - this.data.images.length
        wx.chooseMedia({
            count,
            mediaType: ['image'],
            sizeType: ['compressed'],
            success: res => {
                const tempFiles = res.tempFiles.filter(file => file.size <= 5 * 1024 * 1024)
                this.setData({
                    images: [...this.data.images, ...tempFiles.map(file => file.tempFilePath)]
                })
            }
        })
    },
// 新增拍照功能
takePhoto() {
  wx.chooseMedia({
    count: 1, // 最多拍摄1张
    mediaType: ['image'], // 仅图片
    sourceType: ['camera'], // 仅相机（不显示相册）
    success: async (res) => {
      const tempFilePath = res.tempFiles[0].tempFilePath; // 拍摄的图片路径
      await this.uploadPhoto(tempFilePath); // 上传图片并解析
    },
    fail: (err) => {
      console.error('拍照失败:', err);
      wx.showToast({ title: '拍照失败，请重试', icon: 'none' });
    }
  });
},

// 上传照片并解析
uploadPhoto(tempFilePath) {
  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: 'https://your-backend-domain/wx/photoRecognition', // 后端接口
      filePath: tempFilePath,
      name: 'file', // 后端接收的文件字段名
      // 其他参数...
      success: (uploadRes) => {
        const result = JSON.parse(uploadRes.data);
        if (result.code === 200) {
          this.fillFormWithResult(result.data); // 填充表单
          resolve();
        } else {
          wx.showToast({ title: '识别失败:' + result.msg, icon: 'none' });
          reject();
        }
      },
      fail: (err) => {
        wx.showToast({ title: '上传失败，请检查网络', icon: 'none' });
        reject();
      }
    });
  });
},

// 填充表单数据
fillFormWithResult(data) {
  const { name, no, categoryId, money, date } = data;
  
  // 查找资产类型索引
  const typeIndex = this.data.assetTypes.findIndex(item => item.id === categoryId);
  
  this.setData({
    'formData.name': name,
    'formData.no': no,
    'formData.money': money,
    purchaseDate: date,
    typeIndex: typeIndex >= 0 ? typeIndex : -1, // 处理无效类型
    photoResult: data // 存储原始识别结果
  });
},
    // 删除图片
    deleteImage(e) {
        const index = e.currentTarget.dataset.index
        const images = this.data.images.filter((_, i) => i !== index)
        this.setData({ images })
    },

    // 表单提交
    formSubmit(e) {
        const formData = e.detail.value;
        // 基础校验
        if (!formData.name.trim()) {
            wx.showToast({ title: '请填写资产名称', icon: 'none' });
            return;
        }
        if (this.data.typeIndex === -1) {
            wx.showToast({ title: '请选择资产类型', icon: 'none' });
            return;
        }

        // 经纬度格式校验（可选，根据需求调整）
        const latitudeRegex = /^-?\d+(\.\d+)?$/;
        const longitudeRegex = /^-?\d+(\.\d+)?$/;
        if (formData.latitude && !latitudeRegex.test(formData.latitude)) {
            wx.showToast({ title: '纬度格式不正确（支持数字）', icon: 'none' });
            return;
        }
        if (formData.longitude && !longitudeRegex.test(formData.longitude)) {
            wx.showToast({ title: '经度格式不正确（支持数字）', icon: 'none' });
            return;
        }

        this.setData({ isSubmitting: true });
        // 通过 ID 查找类型对象
      const catenum=parseInt(formData.category)+1;
      const category = this.data.assetTypes.find(item => item.id === catenum);
      if (!category) {
        // 处理无效 ID（如提示用户）
        return wx.showToast({
          title: '请选择有效资产类型',
          icon: 'none'
        });
      }
      const categoryName = category.name; // 正确获取名称
      console.log('类型名称:', categoryName);
  
        // 提取需要上传的数据
        const uploadData = {
            name: formData.name,
            category: categoryName,
            date: formData.date,
            money: formData.money,
            no: formData.no,
            latitude: formData.latitude,
            longitude: formData.longitude,
            staffId: wx.getStorageSync('id')
            // images: this.data.images
        };

        // 提交
        setTimeout(() => {
            wx.showToast({ title: '提交成功', icon: 'success' });
            this.setData({ isSubmitting: false });
            util.http('/wx/addAssets', uploadData, resp => {
                console.log(resp)
                if (resp.code == 200) {
                    wx.navigateBack();
                } else {
                    util.alert("新增失败，请检查编号!（资产已经被添加）")
                    this.setData({ isSubmitting: false });
                }
            })
        }, 1500);
    },

    // 资产类型选择
    typeChange(e) {
        this.setData({ typeIndex: e.detail.value });
    },

    // 购买日期选择
    dateChange(e) {
        this.setData({ purchaseDate: e.detail.value });
    },

    // 扫码功能
    scanAssetId() {
        wx.scanCode({
            onlyFromCamera: true,
            success: (res) => {
                const assetId = res.result;
                if (assetId) {
                    util.alert(`扫描成功，资产编号为：${assetId}`);
                    this.setData({
                        'formData.assetId': assetId
                    });
                } else {
                    util.alert('扫描结果为空，请重新扫描。');
                }
            },
            fail: (err) => {
                util.alert(`扫码失败：${err.errMsg}`);
            }
        });
    },

    // 手动输入纬度
    handleLatitudeInput(e) {
        this.setData({ latitude: e.detail.value });
    },

    // 手动输入经度
    handleLongitudeInput(e) {
        this.setData({ longitude: e.detail.value });
    },

    // 获取当前位置经纬度
    getCurrentLocation() {
        wx.getLocation({
            type: 'gcj02', // 国测局坐标（适用于国内）
            success: (res) => {
                const { latitude, longitude } = res;
                this.setData({ latitude, longitude });
                wx.showToast({ title: '位置获取成功', icon: 'success', duration: 1500 });
            },
            fail: (err) => {
                if (err.errMsg.includes('auth deny')) {
                    // 用户未授权，引导打开授权设置
                    wx.showModal({
                        title: '请求位置授权',
                        content: '需要获取您的位置信息以自动填充经纬度',
                        success: (modalRes) => {
                            if (modalRes.confirm) {
                                wx.openSetting({
                                    success: (settingRes) => {
                                        if (settingRes.authSetting['scope.userLocation']) {
                                            this.getCurrentLocation(); // 授权后重新获取
                                        }
                                    }
                                });
                            }
                        }
                    });
                } else {
                    wx.showToast({ title: '获取位置失败', icon: 'none', duration: 1500 });
                }
            }
        });
    }
});    